﻿※今回はERBに上書きでも、SHOPフォルダだけ差し替えでも大丈夫です。
（ファイル構造に大きな変化はありません。SHOPの変更していないファイルも一応加えました）

----------------------------------------------------------------------------------------------------
#SHOPメニューの整理テスト２
----------------------------------------------------------------------------------------------------

	関数内容を移植するときARG:0を対象と置き換える作業をいくつも忘れてすみません。

	まだテストとついていたのに早速パッチの取り込みや問題の修正、
	気になっていたSLG側の表示調整までしてくださってありがとうございます。
	どうだろうと思う部分もあったので使って頂けて嬉しいです。
	eratoho総合スレ227　>>561さんのＵＰで作業範囲が被った場合はご遠慮なく上書きしてください。

	修正と、前回テストで不足していた部分を調整してみました。


##修正
	+デートもARG:0を対象に書き換え忘れていたので修正
		SHOP_LIFE61_デート.ERB　@SHOP_LIFE_USERSHOP61(対象)

	+ひとつのページに表示可能なボタン数の計算式修正
		SHOP_LIFE_COLUMN_RIGHT_LIST.ERB
		ひとつの行に表示するボタン数LINE_NUM_BUTTONとLINE_NUM_BUTTON_BOTTOMが
		ページの最大ボタン数に反映されていなかったので指定

		BUTTON_LINE_BOTTOMを追加
		こちらはLINE_NUM_BUTTONとは逆に
		１ボタン指定で何行とるかの指定をする
		捕虜の扱いで使用してみた。


##右カラムボタン番号100～の解放
	右カラムで番号が足りないのは、
	SHOP_LIFE.ERB @USERSHOP_LIFEで入力値を強制的にキャラ番号に変換してしまうことが原因に思えた。
	キャラ番号をとりたい時は便利だが、それ以外のときは困ってしまう。

	そこでUSERSHOP_LIFEの処理を
	入力値をキャラ番号に変換して渡す処理（これまで通り）と
	入力値をそのまま受け取って渡す処理（新しい処理）に分岐させてみた。

	分岐条件は各メニューファイルに「右カラムボタン入力値をキャラ番号に変換する処理のオフ判定」を置く。
	（@SHOP_LIFE_USERSHOP_COLUMN_RIGHT_CONVERT_CHARANUM_OFF_CHECK{メニュー番号}　必要なときだけ）

	これがあると、リスト１入力処理@SHOP_LIFE_USERSHOP{メニュー番号}(ARG:0)で
	受け取るARG:0が入力値そのままになる。

	ただ、SHOP_LIFEは元々カラム式が複雑なので更に混乱しやすくなりそうだと気になっている。
	（EVENTBUYフラグだけ入れ替えてSHOWのほうで表示するとか、
	　0～9番でEVENTBUY_SUBとか、USERSHOPからCHARA1とCHARA2に別れるとか）
	メニュー側の関数冒頭で判定するとか、もうちょっといい感じの処理方法がありそうな気がする。


##上記改変のテスト
	「捕虜の扱い」拠点メニューを右カラム表示にしてリスト関数を使ってみた。軟禁も選択可能にしてみた。
	BUTTON_LINE_BOTTOM指定を使い精神力バーを表示してみた。
	（CALL SETSTATE_PRISONER側は弄っていない。そちらを呼び出さずファイルに処理を置いてみた）

	あと右カラムにおさまっていないのは「士官を募る」
	それ以外は画面最下部や捕虜時の特殊なメニューなので、それほど違和感はないと思う。

	SHOP_LIFE46_士官を募る.ERB(27): @SHOP_LIFE_EVENTBUY_COLUMN_RIGHT_OFF_CHECK46
	SHOP_LIFE69_………….ERB(30): @SHOP_LIFE_EVENTBUY_COLUMN_RIGHT_OFF_CHECK69
	SHOP_LIFE71_アイテム.ERB(25): @SHOP_LIFE_EVENTBUY_COLUMN_RIGHT_OFF_CHECK71
	SHOP_LIFE81_休憩.ERB(30): @SHOP_LIFE_EVENTBUY_COLUMN_RIGHT_OFF_CHECK81


##メニュー表示判定の修正
	CHECK_CHECKCHARA_SAVEで、選択可能キャラ存在判定の結果が２のままループ処理が終わった場合も
	SHOP_AVAIL=0にするように
	SHOP_LIFE.ERB @CHECK_CHECKCHARA_SAVE

	;最後まで選択不可色表示のキャラしか残らなかった場合もオフにする
	IF SHOP_AVAIL:(CHECK_SAVE_COUNTER) == 2
		SHOP_AVAIL:(CHECK_SAVE_COUNTER) = 0
	ENDIF


##共有されている選択可否と選択可能キャラ存在判定
	メニュー番号を動かしたときに動作が狂いにくいように
	他ファイルから条件が呼び出されているものはファイルの上の層にまとめた。

	SHOP_LIFE_CHECK.ERB　に条件を移動
	「閨に呼ぶ」の選択可能キャラ存在判定リスト１@SHOP_LIFE_CHECKCHARA_NEYA(ARG:0)
	「能力表示」の選択可能キャラ存在判定リスト１@SHOP_LIFE_CHECKCHARA_NOURYOKU(ARG:0)
	「手引させる」選択可能キャラ存在判定リスト２@SHOP_LIFE_CHECKCHARA_SUB_NAITSUU(ARG:0)


##右カラムに常に最新の何かを表示するための改変
	右カラムが白紙になってしまうのが気になったので
	（右カラムに表示処理のないメニューボタンを押したら白紙になるほうが自然といえば自然なのですが）
	最新の右カラムを保存しておくようにしてみました。

	+流れイメージ
		入力処理でメニュー番号を受け取ったとき、右カラムをオフにする判定の関数を呼ぶ。
		判定が存在しなかったら（右カラムオンなら）最新の右カラムとしてメニュー番号を保存しておく。

		表示処理でFLAG:拠点フェイズ選択コマンドを確認して、右カラムをオフにする判定の関数を呼ぶ。
		判定が存在したら（右カラムオフなら）
		最新の右カラムとして保存されたメニュー番号で、FLAG:拠点フェイズ選択コマンドを上書きする。

	+最新の右カラムを保存しておくための変数を追加
		SHOP_LIFE_VARIABLE.ERH　#DIM SAVEDATA COLUMN_RIGHT_MENU_SAVE_NUM

	+右カラムオフ判定の追加（右カラムの存在しないメニューにだけ置く）
		SHOP_LIFE_EVENTBUY_COLUMN_RIGHT_OFF_CHECK{メニュー番号}

		追加したファイル
			SHOP_LIFE46_士官を募る.ERB(27)	@SHOP_LIFE_EVENTBUY_COLUMN_RIGHT_OFF_CHECK46
			SHOP_LIFE69_………….ERB(30)	@SHOP_LIFE_EVENTBUY_COLUMN_RIGHT_OFF_CHECK69
			SHOP_LIFE71_アイテム.ERB(25)	@SHOP_LIFE_EVENTBUY_COLUMN_RIGHT_OFF_CHECK71
			SHOP_LIFE81_休憩.ERB(30)		@SHOP_LIFE_EVENTBUY_COLUMN_RIGHT_OFF_CHECK81

	+表示処理@SHOW_SHOP_LIFE……右カラムオフ時の分岐を追加

	+入力処理@EVENTBUY_LIFE……右カラムオン時の分岐を追加

	SHOPしか見ていないので何か視点漏れがあるかもしれない。
	セーブデータに添える最新メニュー名の表示とか、
	式中関数でTRYCALLできないのでメニュー名をメニューファイルからとれないのはどうしたものか。


##メニュー番号リセット用の定数追加
	FLAG:拠点フェイズ選択コマンドのリセット用にDEFAULT_MENU_NUMを用意（SHOP_LIFE_VARIABLE.ERH）

	デフォルトのページとして扱う（リセット処理に使う）番号を設定します。
	現在「会いに行く」が設定されています。

	SHOP_LIFE.ERBのリセットする処理で「会いに行く」の番号が指定されていたので差し替えました。
	SHOP_LIFE64_推しメン.ERB 終了時の処理で「会いに行く」の番号が指定されていたので差し替えました。

	リセット処理を「会いに行く」以外のメニューに変えるときや、
	「会いに行く」の番号を移動させたとき、戻し処理を探さなくていいように。


##微調整
	+行動済みマークの配置をボタン右側に変更
		左側のほうが確認しやすいので、右に移動すると慣れるまでしばらく一瞬探してしまいそうですが
		行動済みマークが不要なメニューではオフにするように変更したため、
		ページによってボタンの開始位置がカクンとずれたように感じられるのを改善しようと移動してみました。

	+スキル習得画面から[戻る]をクリックしたときの挙動
		[戻る]クリック時の戻り値、「スキル習得画面内でFIRSTLINEを使用して表示をクリアし、
		SHOP画面に対して表示処理を行った扱い（RETURN 1）で戻る」処理から
		「SHOP画面に対して表示処理を行わなかった扱い（RETURN 0）で戻る」処理に変更
		クリアしてフレーム表示にするように（LINEが１本残ってたため）

	+「スキル習得」の中身を呼び出し元に移動。今度は忘れずに引数ARG:0を対象に。

	+右カラムキャラリスト用のキャラボタンの引数を日本語化
		メニューファイル側から直接ボタンを指定できるように変更したので
		コピペしやすいように引数のDIMを日本語化しました
		SHOP_LIFE_COLUMN_RIGHT_LIST.ERB COLUMN_RIGHT_CHARALIST_BUTTON

		SHOP_LIFEのDIM変数名はあちこちの処理のベースなので
		被りにくい長めの名前でつけてみましたが厄介そうなら変更してください。

	+中央の隙間が半角3だと少し広い気がしたので半角2に

	+関係一覧のキャラからキャラへのユニコード変更
		⇒だと末尾が長音のキャラのとき（ドレミーとかスターとか）見辛い気がしたので➡に

	+地方へ派遣
		タイトル表示の追加


##備考・メモ
	+「オフ」を判定するのはちょっとわかりにくいかも
		右カラムオフのメニューや右カラムでキャラ番号を拾わないメニューのほうが少ないので
		判定用関数の追加の手間を減らすためこの形にしましたが、わかりにくいようでしたら変更してください。

	+右カラムが白紙になる可能性は潰せていない
		今回のメニュー番号が右カラムオフかつ
		最新の「右カラムに表示のあるメニュー番号」が実行不可になっていた場合
		まだ白紙になる

		これを避けるには５つくらい過去番号を保存しておいて
		選択可否判定しながら最新を取り出す形になる？

	+メニュー列と右カラムの区切りの罫線
		ボタンの]で罫線状態になるので省いたのですが、
		ボタンそのものに[]をつけるかどうかも含めてデザイン次第＆好みだと思うので
		SLGとデザインを共有するとき
		区切りも文字列変数化しておいたほうがいいかも？


